package com.zide.framework.web.mapper;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zide.common.core.domain.PageResult;
import com.zide.framework.config.mybatisplus.XianYingMapperPlus;
import com.zide.common.core.domain.SysLogininfor;
import com.zide.framework.web.domain.loginfor.SysLogininforSearchVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 系统访问日志情况信息 数据层
 * 
 * @author zide
 */
@Mapper
public interface SysLogininforMapper extends XianYingMapperPlus<SysLogininfor> {

    default PageResult<SysLogininfor> selectPage(SysLogininforSearchVO searchVO) {
        LambdaQueryWrapper<SysLogininfor> wrapper = new LambdaQueryWrapper<>();
        if(StrUtil.isNotEmpty(searchVO.getIpaddr())) {
            wrapper.like(SysLogininfor::getIpaddr,searchVO.getIpaddr());
        }
        if(StrUtil.isNotEmpty(searchVO.getUsername())) {
            wrapper.like(SysLogininfor::getUsername,searchVO.getUsername());
        }
        if(ObjectUtil.isNotNull(searchVO.getStatus())) {
            wrapper.eq(SysLogininfor::getStatus,searchVO.getStatus());
        }
        return selectPage(searchVO, wrapper);
    }
    /**
     * 新增系统登录日志
     * 
     * @param logininfor 访问日志对象
     */
    public void insertLogininfor(SysLogininfor logininfor);

    /**
     * 查询系统登录日志集合
     * 
     * @param logininfor 访问日志对象
     * @return 登录记录集合
     */
    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);

    /**
     * 批量删除系统登录日志
     * 
     * @param infoIds 需要删除的登录日志ID
     * @return 结果
     */
    public int deleteLogininforByIds(Long[] infoIds);

    /**
     * 清空系统登录日志
     * 
     * @return 结果
     */
    public int cleanLogininfor();
}
